namespace MultiAgentsClient.Service.WorkflowEngine;

[AttributeUsage(AttributeTargets.Class)]
public class NodeGraphPortDefAttribute(int inputPorts, int outputPorts) : Attribute
{
    /// <summary>
    /// When its -1, it means its dynamically assigned
    /// </summary>
    public int InputPorts = inputPorts;
    public int OutputPorts = outputPorts;
}

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
public class NodeGraphParamAttribute : Attribute
{
    public readonly bool variableOnly;

    public NodeGraphParamAttribute(bool variableOnly = false)
    {
        this.variableOnly = variableOnly;
    }
}

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
public class NodeGraphOutputAttribute : Attribute
{
}

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
public class StringEnumAttribute : Attribute
{
}
